到生产环境看看 key 设对了没有。
实际上 Rails 官方有个基于 docker 的命令行工具,适合体验用:
https://github.com/rails/docked
安装:
docker volume create ruby-bundle-cache
alias docked='docker run --rm -it -v ${PWD}:/rails -u $(id -u):$(id -g) -v ruby-bundle-cache:/bundle -p 3000:3000 ghcr.io/rails/cli'
使用:
docked rails new weblog
cd weblog
docked rails generate scaffold post title:string body:text
docked rails db:migrate
docked rails server
我太久没用 brew 了,确实忘了要执行这个:
If you need to have ruby first in your PATH, run:
echo 'export PATH="/opt/homebrew/opt/ruby/bin:$PATH"' >> ~/.zshrc
如果只想用 brew 管理的最新版本 ruby,就不需要用带版本号的 PATH。
如果你用某一个管理工具安装成功了,那很好,先继续学习。
我在这些管理工具踩过不少坑,怕了这些自动改环境变量的工具,再也不想花时间在这上面了。
很遗憾楼主最终没解决,我推测问题是出在编译工具和环境,这个换什么管理工具都是一样的。但不实地操作我也不知道怎么修复。
我要补充一下,对于新手来说最简单的方法是使用 homebrew:
brew install ruby
为了配合某些 Rails 教程版本,brew 可以安装特定版本 Ruby:
brew install [email protected]
brew 也可以安装 libpq
libvips
之类的编译依赖,对于初学环境已经够用。
如果要维护老项目,需要安装特定的包和依赖,去用 docker 和 docker compose,这是终极方案。
如果不是很熟悉 Linux 环境或者机器性能不好,别用 rvm、rbenv、asdf 这类基于环境变量的版本管理工具,很容易把环境变量搞得一团糟。
看起来只要一编译就卡住?
看看 xcode-select -p
的输出,我的是
/Library/Developer/CommandLineTools
sudo xcode-select --resst
可以重置。
另外编译的时候检查内存和硬盘有没有耗尽。
删掉 /opt/homebrew/lib/ruby/gems/3.3.0/
,我看一些 build 目录在 gems 外面,应该已经被污染了。
还有我最近处理过一个 Ruby 安装问题是混用了不同的安装器,然后环境变量一团乱,最后把所有安装器卸载干净清理多余的环境变量,再重装 homebrew 和 ruby 解决的。
目录权限错乱了,本来 brew 目录下是 user 权限的,执行过一次 sudo 创建了 root 权限的目录,后续写入卡住了。
删了 /opt/homebrew/lib/ruby/gems/3.3.0/gems/
重新装 gem 也许有用,但不知道还有没有其他目录权限错乱。不行再删除 ruby 看目录清空了没有,再重新安装 ruby。
brew 安装的 ruby 不要用 sudo,它安装目录是属于用户的。
xcode-select --install
再尝试安装 Railsrails 7.2 将会添加可选的 devcontainer 配置 https://rubyonrails.org/2024/5/24/this-week-in-rails
这比自己写 docker compose 更方便一些,但不是所有编辑器都支持 devcontainer。
我用 docker 很久了,印象中用 homebrew 也没遇到什么问题。贴的日志太少无法判断。
找到一本 hotwire 的书,我还没看 https://www.hotrails.dev/
这个作者写了一篇博客怎么用 hotwire 思维做一个搜索框值得参考 https://world.hey.com/alexandre/how-to-build-a-cmd-k-search-modal-with-hotwire-981f5159
比如: “搜索框,输入内容按回车,跳转搜索链接/search?q=keyword”, 需要在 erb 和 stimulus 的 controller 里面写不少代码。
这不只是 get 表单么?
用 npm 装包,在 tailwind config 里面 require 可以正常使用。
挖了一下:
36 氪 2012 年度改版后是从 ruby-china 开源代码上构建的。
https://ruby-china.org/topics/13071#reply-134521
现在不知道了。
python?! 我们中出了叛徒
恢复了,估计是看错了。
对我来说,依然是 Rails 更好。
docker 的 Ruby 镜像和 Ruby 官方的 docker 镜像都是 debian 系的,从 debian 入手以后平滑过渡。
没内容连水都不是,浪费点击。
不是对区块链有仇,而是以往放纵了你的水贴,从以下这贴起已经引起其他人不满,所以开始严格执行。
https://ruby-china.org/topics/43454
屏蔽理由已留:标题或正文写得不清楚。水别的一样会处理。
我这里测试风险标签已经去掉。
我已经提交了申诉,看看后续如何。
现在有多名管理员经常看版面,垃圾内容应该不会存在超过 24 小时,如果有漏网之鱼可以在评论区 @Rei
ActionCable 有一个 postgres adapter,不过很少人用 https://github.com/rails/rails/blob/main/actioncable/lib/action_cable/subscription_adapter/postgresql.rb
Rails 里面不用定义,ActiveRecord 是动态读取数据库里面的表信息。你需要为外部数据库的表创建 model,并且设置连接信息,不需要 migration。
搜了个例子 https://stackoverflow.com/a/35492504
你可以跟 python 项目约定好命名规则,id 用 id 整数递增,字段名用下划线,这样就可以很大程度兼容 AR 的约定。然后给 Rails 项目开一个只读权限账号,避免 Rails 项目不小心写入。
Rails 可以同时连接多个数据库。如果 python 子系统的数据没什么兼容问题,可以不导入直接读。
caddy 在申请证书前可以访问后端 api 检查的。
现在放在国外,必要时再开国服。
提醒一下 CF proxy 的灵活模式,CF 到你服务器之间的流量没有加密,数据可能会被中间代理记录。建议用完全模式,在 CF Origin Server 管理页生成一个证书配置到 caddy 上。
https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes/full/ https://developers.cloudflare.com/ssl/origin-configuration/origin-ca/